package top.linruchang.bean;

import cn.hutool.crypto.digest.DigestUtil;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.UUID;

/**
 * 作用：
 *
 * @author LinRuChang
 * @version 1.0
 * @date 2020/11/05
 * @since 1.8
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
public class YouDaoYunTranslateApiParam {

    /**被翻译的文本*/
    String q;

    /**源字符语言 - 被翻译的文本语言*/
    String from = "zh-CHS";

    /**翻译回来的语言*/
    String to = "en";

    /**应用ID*/
    String appKey = "xxxxxxx";

    /**uuid*/
    String salt = UUID.randomUUID().toString().replaceAll("-", "");

    /**签名sha256摘要算法 - byte[] => 16进制转换后的字符*/
    String sign;

    /**签名类型*/
    String signType = "v3";

    /**时间戳（秒）*/
    String curtime = String.valueOf(System.currentTimeMillis()/1000);

    /**严格按照指定from和to语种翻译*/
    String strict = "true";

    @Getter
    @Setter
    String secretKey = "xxxxxxxxxx";

    public YouDaoYunTranslateApiParam setQ(String q) {
        this.q = q.trim();
        return this;
    }

    public void signSetting() {
        /**
         * 规则
         *  翻译字符长度>20 => 翻译前10个字符 + 翻译字符长度 + 翻译后10个字符
         *  翻译字符长度<=20 => 翻译字符
         */
        String input = "";
        if(q.length() > 20) {
            input = getQ().substring(0, 10) + getQ().length() + getQ().substring(getQ().length()-10);
        }else {
            input = getQ();
        }
        String sourcetTest = appKey + input + salt + curtime + secretKey;
        setSign(DigestUtil.sha256Hex(sourcetTest, "utf-8")); //签名
    }

}
